package controllers

import (
	"net/http"
	"path/filepath"

	"github.com/gin-gonic/gin"
)

// UploadFile godoc
// @Summary 上传单个文件
// @Description 上传单个文件（图片、文档等）
// @Tags 文件模块
// @Accept multipart/form-data
// @Produce json
// @Param file formData file true "上传文件"
// @Success 200 {object} map[string]interface{} "上传成功返回文件路径"
// @Failure 400 {object} map[string]interface{} "上传失败"
// @Router /api/v1/upload [post]
func UploadFile(c *gin.Context) {
	file, err := c.FormFile("file")
	if err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": "未检测到文件"})
		return
	}

	// 文件保存路径
	savePath := filepath.Join("uploads", file.Filename)

	// 保存文件
	if err := c.SaveUploadedFile(file, savePath); err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "文件保存失败"})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"message": "上传成功",
		"path":    "/" + savePath,
	})
}
